package com.zablert.mainactivity.normal

import androidx.fragment.app.Fragment
import com.alibaba.android.arouter.facade.annotation.Route
import com.zablert.mainactivity.BaseRouteConstants.NORMAL_ACTIVITY_PATH
import com.zablert.mainactivity.R
import com.zablert.mainactivity.databinding.ActivityNormalBinding
import com.zablert.mainactivity.normal.fragment.NormalFragment
import zyc.zalbert.activity.CoreBVMActivity
import java.util.ArrayList

@Route(path = NORMAL_ACTIVITY_PATH)
class NormalActivity : CoreBVMActivity<ActivityNormalBinding, NormalViewModel>() {
    private val fragments: ArrayList<Fragment> = arrayListOf(
        NormalFragment.newInstance("第1个", "1"),
        NormalFragment.newInstance("第2个", "2"),
        NormalFragment.newInstance("第3个", "3")
    )

    override fun layoutId(): Int {
        return R.layout.activity_normal
    }

    override fun initViewModel(): NormalViewModel {
        return NormalViewModel()
    }

    override fun onInitContent() {
        super.onInitContent()
        binding.run {
            slideTab.setViewPager(vp, arrayOf("第一个", "第二个", "第三个"), this@NormalActivity, fragments)
        }
    }
}

/**
 * Error类和Exception类的父类都是Throwable类，他们的区别如下：
 * Error类一般是指与虚拟机相关的问题，如系统崩溃，虚拟机错误，内存空间不足，方法调用栈溢出等。对于这类错误的导致的应用程序中断，仅靠程序本身无法恢复和预防，遇到这样的错误，建议让程序终止。
 * Exception类表示程序可以处理的异常，可以捕获且可能恢复。遇到这类异常，应该尽可能处理异常，使程序恢复运行，而不应该随意终止异常。
 * Exception类又分为未检查异常（UnCheckedException）和受检查的异常(CheckedException)。
 * 运行时异常ArithmeticException，IllegalArgumentException编译能通过，但是一运行就终止了，程序不会处理运行时异常，出现这类异常，程序会终止。
 * 而受检查的异常，要么用 try…catch 捕获，要么用throws字句声明抛出，交给它的父类处理，否则编译不会通过。
 */
final class Function {}
